package com.linkai.mt_2021_10;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * @Description: 美团2021校招笔试-编程题(通用编程试题,第10场)
 *                公司食堂 https://www.nowcoder.com/question/next?pid=28665343&qid=1371128&tid=48867849
 *                思路：
 * @Author: 林凯
 * @Date: 2021/10/9 16:52
 */
public class Main03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = Integer.valueOf(sc.nextLine());
        int N[] = new int[T];
        String strUse[] = new String[T];
        int M[] = new int[T];
        String strWaite[] = new String[T];
        for (int i = 0; i < T; i++) {
            N[i] = Integer.valueOf(sc.nextLine()) ;       // N 张餐桌
            strUse[i] = sc.nextLine();      // 每张餐桌正在用餐的人数
            M[i] = Integer.valueOf(sc.nextLine());               // 排队的人数
            strWaite[i] = sc.nextLine();    // 等候的男女人数构成
        }

        // 结果数组
        ArrayList<Integer> result = new ArrayList<>();
        ArrayList<ArrayList<Integer>> results = new ArrayList<>();

        // 1. 遍历每组数据，共有T组数据； i 表示当前是第几组数据
        for (int i = 0; i < T; i++) {
            // 2. 遍历等候字符串；j 表示当前是等候字符串的第几个字符
            for (int j = 0; j < M[i]; j++) {
                if (strWaite[i].charAt(j) == 'M') { // 男性
                    // 3. 遍历Use字符串（遍历餐桌状态）
                    int index = strUse[i].indexOf('1');
                    if (index != -1) {    // 返回值不为 -1 说明存在“1人餐桌”
                        // 这里输出的是顺序，所以数组下标还要 + 1
                        result.add(index + 1);
                        // 更新字符串
                        StringBuffer tmpstr = new StringBuffer(strUse[i]);
                        tmpstr.replace(index, index + 1, "2");
                        strUse[i] = tmpstr.toString();
                    } else {        // 不存在“1人餐桌”，考虑“0人餐桌”
                        index = strUse[i].indexOf('0');
                        result.add(strUse[i].indexOf('0') + 1);
                        StringBuffer tmpstr = new StringBuffer(strUse[i]);
                        tmpstr.replace(index, index + 1, "1");
                        strUse[i] = tmpstr.toString();
                    }

                } else {    // 女性
                    // 3. 遍历Use字符串（遍历餐桌状态）
                    int index = strUse[i].indexOf('0');
                    if (index != -1) {    // 返回值不为 -1 说明存在“0人餐桌”，考虑“0人餐桌”
//                        result[i][j] = index;
                        result.add(index + 1);
                        // 更新字符串
                        StringBuffer tmpstr = new StringBuffer(strUse[i]);
                        tmpstr.replace(index, index + 1, "1");
                        strUse[i] = tmpstr.toString();
                    } else {        // 不存在“0人餐桌”，考虑“1人餐桌”
                        index = strUse[i].indexOf('1');
                        result.add(strUse[i].indexOf('1') + 1);
                        StringBuffer tmpstr = new StringBuffer(strUse[i]);
                        tmpstr.replace(index, index + 1, "2");
                        strUse[i] = tmpstr.toString();
                    }

                }
            }
            results.add(result);
        }

        for (int i = 0; i < T; i++) {
            for (int j = 0; j < M[i]; j++) {
                System.out.println(results.get(i).get(j));
            }
        }

    }
}
